package org.wheel.plugins.toolkit.sql.spi.annotation.support;


import org.wheel.plugins.toolkit.sql.spi.register.AnnotationRegistry;

/**
 * 默认把 wheel 自带的 3 个注解注册进去，
 * 纯 Java 项目或单测时，保证不配置也能用。
 *
 * 触发方式：
 *   1. 纯 Java：main 方法第一行手动调用 {@link #registerDefaults()} 。
 *   2. Spring 环境：可让 SpringBootAnnotationProvider 直接依赖本类，避免重复代码。
 */
public final class DefaultAnnotationProvider {

    private static volatile boolean done = false;

    public static void registerDefaults() {
        if (done) return;
        synchronized (DefaultAnnotationProvider.class) {
            if (done) return;
            // 1. 表注解
            AnnotationRegistry.registerTableAnnotation(
                    org.wheel.plugins.toolkit.sql.annon.Table.class);
            // 2. 列注解
            AnnotationRegistry.registerColumnAnnotation(
                    org.wheel.plugins.toolkit.sql.annon.Column.class);
            // 3. 主键注解
            AnnotationRegistry.registerIdAnnotation(
                    org.wheel.plugins.toolkit.sql.annon.Id.class);
            done = true;
        }
    }

    private DefaultAnnotationProvider() {}
}
